/**
 * 文件名称: main.c
 * 摘    要: linux应用程序下操作eeprom测试
 * 来    源: 自我总结
 *
 * 当前版本: 1.0 
 * 作    者: huenrong
 * 完成日期: 2019年06月12日
 **/


#include <stdio.h>
#include <unistd.h>
#include <string.h>

#include "eeprom.h"


int main(int argc, char **argv)
{
    int fd = -1;        // 设备文件描述符
    int ret = -1;       // 函数返回值
    char write_buf[30] = {0};       // 写入数据buf
    char read_buf[30] = {0};        // 读取数据buf

    fd = eeprom_init(EEPROM_DEV_NAME);      // 打开设备
    if (fd < 0) 
    {
        printf("open eeprom fail\n");
        
        return -1;
    }
    
    printf("open eeprom successfully!\n");

    // 写入数据buf赋值
    for (int i = 0; i < 20; i++)
    {
        write_buf[i] = i;
    }
    
    ret = eeprom_write_nbyte(fd, 0, write_buf, 20);       // 从地址0开始, 写入长度为20的数据
    if (-1 == ret)
    {
        printf("eeprom write data error!\n");
    }

    sleep(1);       // 延时等设备稳定

    memset(read_buf, 0, sizeof(read_buf));          // 清空读取数据buf
    ret = eeprom_read_nbyte(fd, 0, read_buf, 20);         // 从地址0开始, 读取长度为20的数据
    if (-1 == ret)
    {
        printf("eeprom read data error!\n");
    }

    // 比较读取和写入的数据是否相等
    ret = memcmp(write_buf, read_buf, 20);
    if (0 == ret)
    {
        printf("eeprom test ok!\n");
    }
    else
    {
        printf("eeprom test error!\n");
    }

    eeprom_close(fd);       // 关闭设备
    
    return 0;
}